home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1997 #1 / Amiga Plus CD - 1997 - No. 01.iso / pd / programmierung / tds / convsrc / dice2msg.c < prev    next >
C/C++ Source or Header  |  1995-11-01  |  2KB  |  77 lines

  1. /* Dice2Msg.c */
  2.  
  3. #include <exec/types.h>
  4. #include <dos/stdio.h>
  5. #include <clib/dos_protos.h>
  6.  
  7. #include <stdio.h>
  8. #include <string.h>
  9.  
  10. static UBYTE version[] = "$VER: Dice2Msg 1.01 (11.03.94)";
  11.  
  12. struct ErrorMsg {
  13.   BOOL warn;
  14.   LONG row,col;
  15.   UBYTE fileName[256];
  16.   UBYTE errStr[256];
  17. };
  18.  
  19.  
  20. void 
  21. PrintMsg(struct ErrorMsg *msg)
  22. {
  23.   printf("<%s> %d %c <%s>\n",msg->fileName,msg->row,(msg->warn ? 'W' : 'E'),msg->errStr);
  24. }
  25.  
  26.  
  27. /*
  28. DICE 2.07.54
  29.  
  30. DCPP: "test.c" L:5 C:0 Error:47 Can't open file asfasf.h
  31. DAS: "test.c" L:12 Error:41 Unknown Directive: *ARGV[]
  32. DC1: "test.c" L:22 Error:80 expected '{' or '}' for procedure def
  33.  
  34. DICE 2.06.40
  35.  
  36. DC1: Error Line 3 "test.c" 73:syntax error in declaration
  37. DC1: Fatal-Error Line 3 "test.c" 23:syntax error in expression
  38. Error file test.c line 3 : Unable to open asdasda.h
  39. Error file test.c line 11 : Unexpected EOF (unterminated comment)
  40. */
  41.  
  42. BOOL
  43. ConvertMsg(struct ErrorMsg *msg)
  44. {
  45. UBYTE line[256];
  46.  
  47.   while (ReadLn(line,255)) {
  48.     msg->warn = (strstr(line,"Warning") != NULL);
  49.   
  50.     if (sscanf(line,"%*s \"%[^\"]\" L:%d %[^\n]",msg->fileName,&msg->row,msg->errStr) == 3)
  51.       return(TRUE);
  52.     
  53.     if (sscanf(line,"%*s \"%[^\"]\" L:%d C:%*d %[^\n]",msg->fileName,&msg->row,msg->errStr) == 3)
  54.       return(TRUE);
  55.   
  56.     if (sscanf(line,"%*s %*s Line %d \"%[^\"]\" %[^\n]",&msg->row,msg->fileName,msg->errStr) == 3)
  57.       return(TRUE);
  58.   
  59.     if (sscanf(line,"%*s file %s line %d : %[^\n]",msg->fileName,&msg->row,msg->errStr) == 3)
  60.       return(TRUE);
  61.   }
  62.   return(FALSE);
  63. }
  64.  
  65.  
  66. int
  67. main(int argc,UBYTE *argv[])
  68. {
  69. struct ErrorMsg errMsg;
  70.  
  71.   while (ConvertMsg(&errMsg))
  72.     PrintMsg(&errMsg);
  73.  
  74.   return(0);
  75. }
  76.  
  77.